package com.stefanini.pe.bbva.bp.in.model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.indra.pe.bbva.bp.in.helper.SelectItemHelper;
import com.pe.bbva.utils.Constantes;
import com.stefanini.pe.bbva.bp.in.bo.iface.MultiTablaBOIface;
import com.stefanini.pe.bbva.bp.in.bo.iface.ParametrosBOIface;
import com.stefanini.pe.bbva.bp.in.bo.iface.PerfilBOIface;
import com.stefanini.pe.bbva.bp.in.bo.iface.ResumenGeneralBOIface;
import com.stefanini.pe.bbva.bp.in.to.CategoriaProducto;
import com.stefanini.pe.bbva.bp.in.to.Combo;
import com.stefanini.pe.bbva.bp.in.to.MultiTabla;
import com.stefanini.pe.bbva.bp.in.to.Parametros;
import com.stefanini.pe.bbva.bp.in.to.Perfil;
import com.stefanini.pe.bbva.bp.in.to.UsuarioAsesor;

@Controller
@SessionScoped
public class ComboModel {
	private static Logger logger = Logger.getLogger(ComboModel.class);
	@Autowired
	private ResumenGeneralBOIface resumenGeneralBO;
	@Autowired
	private ParametrosBOIface parametrosBOIface;
	@Autowired
	private MultiTablaBOIface multitablaBO;
	@Autowired
	private PerfilBOIface perfilesBO;
	
	private List<SelectItem> listPerfiles;
	private List<SelectItem> listCriteriosBusqueda;
	private List<SelectItem> listCriteriosBusquedaNoCliente;
	private List<SelectItem> listaAlertasEstado;
	private List<SelectItem> listTiposCliente;
	private List<SelectItem> listEstadosPerfilamiento;
	private List<SelectItem> listEstadosRebalanceo;
	private List<SelectItem> listMeses;
	private List<SelectItem> listAnios;
	private List<SelectItem> listMedioContacto;
	private List<SelectItem> listLugarContacto;
	private List<SelectItem> listRazonContacto;
	private List<SelectItem> listaTiposDocumento;
	private List<SelectItem> listaTiposUsu;
	private List<SelectItem> listaTiposUsuNuevo;
	private List<SelectItem> listaAniosMetas;
	private List<SelectItem> listaEjecutivosAAsignar;
	private List<SelectItem> listaTipoMetas;	
	private List<SelectItem> lstEjecAReasignar;	
	private List<SelectItem> lstTiposDeAsignacion;
	private List<SelectItem> listaFuentes;
	private List<SelectItem> listaProcedencias;
	private List<CategoriaProducto> listCategoriaProducto;	
	private List<SelectItem> listaCatProductos;
	private List<SelectItem> listaCbxCategoriaProductos;
	private String codPerfil;
	private String codTipoCliente;
	private String codCriterioBusqueda;
	private String anioSelectedIni;
	private List<SelectItem> listaOperacionesBBVA;
	private List<SelectItem> listaOperacionesRecursos;
	private List<SelectItem> listEjecutivosAAsignar;
	private List<SelectItem> listTipoMeta;
	private List<SelectItem> listSecciones;
	private List<SelectItem> listEscenarios;	
	private List<SelectItem> listaFrecuenciaPago;
	private List<SelectItem> listaTipoAmortizacion;
	private List<SelectItem> listaTipoInstrumento;
	private List<SelectItem> listaSectores;
	private List<SelectItem> listaTipoMoneda;	
	private List<SelectItem> listaTipoDocsClientesEspeciales;
	private List<SelectItem> listaFiltroClientesEspeciales;
	private List<SelectItem> listaSiNo;
	private List<SelectItem> listaSiNoTodos;
	private List<SelectItem> listaAsesores;	
	private List<SelectItem> listaAnio;	
	private List<SelectItem> listaSoloAsesores;
	
	@PostConstruct
	public void inicio(){		
		cargaListPerfiles();
		cargaListCriteriosBusqueda();
		cargaListaCriteriosBusquedaNoCliente();
		cargarListaAlertasEstado();
		cargaListTiposCliente();
		cargaListMeses();
		cargaListAnios();
		cargaListMedioContacto();
		cargaListRazonContacto();
		cargaListLugarContacto();
		cargaListCategoriaProducto();
		cargarListaTiposDocumento();
		cargaListaTiposUsuario();
		cargaListaAniosMetas();
//		cargaListaEjecutivosAAsignar(loginModel.getUsuarioSesion().getIdUsuarioAsesor());
		cargaListaTiposMetas();
//		cargaListaEjecutivosAReasignar(new Long(0));
		cargaListaTiposDeAsignacion();
		cargaListaTiposUsuarioNuevo();
		cargaListaFuentes();
		cargaListaProcedencias();
		cargarListaOperacionesBBVA();
		cargarListaOperacionesRecursos();
		cargaListEjecutivosSinAsignar();
		cargaListTipoMeta();
		cargaListSecciones();
		cargaListEscenarios();
		cargarCategoriasProductoCmb();
		cargaListaSectores();
		cargaListaTipoInstrumento();
		cargaListaTipoAmortizacion();
		cargaListaFrecuenciaPago();
		cargaListaMonedas();		
		cargaListaTipoDocsClientesEspeciales();
		cargaListaFiltroClientesEspeciales();
		cargarListaSiNo_Registro();
		cargarListaSiNo_RegistroTodos();
		cargarListaAsesores();
		cargarListaAnio();
		cargarListaSoloAsesores();
		cargarCbxCategoriaProductos();
		cargarListaEstadosPerfilamiento();
		cargarListaEstadosRebalanceo();
	}

	/*
	 * abarrios carga combo anio
	 */
	public void cargarListaAnio(){
		this.setListaAnio(new ArrayList<SelectItem>());
		try {
			List<Combo> listaAnio = resumenGeneralBO.listarAnio();
			for (Combo objUsu : (List<Combo>) listaAnio) {
				this.getListaAnio().add(new SelectItem(objUsu.getCodigo(),objUsu.getValor()));
			}	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void cargarListaAsesores(){		

		String[] values = new String[]{"idUsuarioAsesor"};
		String[] labels = new String[]{"apellidoPaterno","apellidoMaterno","nombre"};
    	SelectItemHelper<UsuarioAsesor> comboUsuarioAsesor = new SelectItemHelper<UsuarioAsesor>(values,labels);
    	
    	UsuarioAsesor usuario = new UsuarioAsesor();
		usuario.setNombreEjec("");		
		usuario.setNombreEjecACargo("");		
		usuario.setIdTipoUsuario("0");	

    	try{
			List<UsuarioAsesor> listaUsuarios = parametrosBOIface.listarUsuarios(usuario);
	    	this.setListaAsesores(comboUsuarioAsesor.factorySelectItemWithLabelAll(listaUsuarios));
    	}catch(Exception e){
    		logger.error(e.getMessage(),e);
    		this.setListaAsesores(comboUsuarioAsesor.factorySelectItemError());
    	}
	}
	
    public void cargarListaSoloAsesores(){
		String[] values = new String[]{"idUsuarioAsesor"};
		String[] labels = new String[]{"apellidoPaterno","apellidoMaterno","nombre"};
    	SelectItemHelper<UsuarioAsesor> comboUsuarioAsesor = new SelectItemHelper<UsuarioAsesor>(values,labels);
    	
    	UsuarioAsesor usuario = new UsuarioAsesor();
		usuario.setNombreEjec("");		
		usuario.setNombreEjecACargo("");		
		usuario.setIdTipoUsuario("0");	

    	try{
			List<UsuarioAsesor> listaUsuarios = parametrosBOIface.listarUsuarios(usuario);
	    	this.setListaSoloAsesores(comboUsuarioAsesor.factorySelectItemWithLabelAll(listaUsuarios));
    	}catch(Exception e){
    		e.printStackTrace();
    		logger.error(e.getMessage(),e);
    		this.setListaSoloAsesores(comboUsuarioAsesor.factorySelectItemError());
    	}
	}

	public void cargaListCategoriaProducto() {
		try{
			listCategoriaProducto = parametrosBOIface.listarCategoriasProducto();
		}catch(Exception e){
    		e.printStackTrace();
    	}
	}

	public void cargaListMedioContacto() {
		try{	
			listMedioContacto = parametrosBOIface.listaMedioContacto();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	public void cargaListRazonContacto() {
		try{
			listRazonContacto = parametrosBOIface.listaRazonContacto();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	public void cargaListLugarContacto() {
		try{
			listLugarContacto = parametrosBOIface.listaLugarContacto();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	public void cargaListMeses() {
		try{
			listMeses = parametrosBOIface.listaMeses();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargarListaOperacionesBBVA(){
		listaOperacionesBBVA=new  ArrayList<SelectItem>();
		listaOperacionesBBVA.add(new SelectItem("+","+"));
		listaOperacionesBBVA.add(new SelectItem("-","-"));
	}
	
	public void cargarListaSiNo_Registro(){
		listaSiNo=new  ArrayList<SelectItem>();		
		listaSiNo.add(new SelectItem("S","Si"));
		listaSiNo.add(new SelectItem("N","No"));
	}
	
	public void cargarListaSiNo_RegistroTodos(){
		listaSiNoTodos=new  ArrayList<SelectItem>();	
		listaSiNoTodos.add(new SelectItem("","-- Todos --"));
		listaSiNoTodos.add(new SelectItem("S","Si"));
		listaSiNoTodos.add(new SelectItem("N","No"));
	}
	
	public void cargarListaOperacionesRecursos(){
		listaOperacionesRecursos=new  ArrayList<SelectItem>();		
		listaOperacionesRecursos.add(new SelectItem("-","-"));
	}

	public void cargaListaSectores(){
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_TIPO_SECTOR);
			listaSectores=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaSectores.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaTipoInstrumento(){
		try{	
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_TIPO_INSTRUMENTO);
			listaTipoInstrumento=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaTipoInstrumento.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaTipoAmortizacion(){
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_TIPO_AMORTIZACION);
			listaTipoAmortizacion=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaTipoAmortizacion.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaMonedas(){
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_TIPO_MONEDA);
			listaTipoMoneda=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaTipoMoneda.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("valor1"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaFrecuenciaPago(){	
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_FRECUENCIA_PAGO);
			listaFrecuenciaPago=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaFrecuenciaPago.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaFuentes(){
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_FUENTE_REBALANCEO);
			listaFuentes=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaFuentes.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaTipoDocsClientesEspeciales(){	
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_TIPO_DOCS_CLIENTE_ESPECIAL);
			listaTipoDocsClientesEspeciales=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaTipoDocsClientesEspeciales.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaFiltroClientesEspeciales(){
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_FILTRO_CLIENTE_ESPECIAL);
			listaFiltroClientesEspeciales=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaFiltroClientesEspeciales.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListaProcedencias(){
		try{
			List<Map<String, Object>> lista=parametrosBOIface.listaMultiTabla(null, Constantes.COD_TABLA_PROCEDENCIA_REBALANCEO);
			listaProcedencias=new ArrayList<SelectItem>();		
			for (Map<String, Object> item:lista) {
				listaProcedencias.add(new SelectItem(String.valueOf(item.get("valor1")),String.valueOf(item.get("descripcion"))));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void cargaListPerfiles() {
		listPerfiles = new ArrayList<SelectItem>();
		try {
			List lPerfiles = perfilesBO.listarPerfilesCmb();
			listPerfiles.add(new SelectItem(0, "-- Seleccione --"));
			for (Iterator iter = lPerfiles.iterator(); iter.hasNext();) {
				Perfil element = (Perfil) iter.next();
				listPerfiles.add(new SelectItem(element.getIdperfil(), element
						.getNombre()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	

	public void cargarListaAlertasEstado() {
		listaAlertasEstado = new ArrayList<SelectItem>();
		try {
			List lAlertas = parametrosBOIface.listarAlertasEstado();
			listaAlertasEstado.add(new SelectItem(0, "-- Seleccione --"));
			for (Iterator iter = lAlertas.iterator(); iter.hasNext();) {
				Parametros element = (Parametros) iter.next();
				listaAlertasEstado.add(new SelectItem(element.getValue(), element
						.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public void cargarCategoriasProductoCmb() {
		listaCatProductos = new ArrayList<SelectItem>();
		try {
			CategoriaProducto cp = new CategoriaProducto("0", "-- Seleccione --", "");
			listaCatProductos.add(new SelectItem(cp, cp.getDescripcion()));
			
			List<CategoriaProducto> lCategorias = parametrosBOIface.listarCategoriasProducto();
			for (Iterator<CategoriaProducto> iter = lCategorias.iterator(); iter.hasNext();) {
				CategoriaProducto element = iter.next();
				listaCatProductos.add(new SelectItem(element, element.getDescripcion()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public void cargarCbxCategoriaProductos(){
		String[] values = new String[]{"idCategoriaProducto"};
		String[] labels = new String[]{"descripcion"};
    	SelectItemHelper<CategoriaProducto> comboCategoriaProducto = new SelectItemHelper<CategoriaProducto>(values,labels);
    	try{
			List<CategoriaProducto> listaCategoriaProducto = parametrosBOIface.listarCategoriasProducto();
	    	this.setListaCbxCategoriaProductos(comboCategoriaProducto.factorySelectItemWithLabelAll(listaCategoriaProducto));
    	}catch(Exception e){
    		logger.error(e.getMessage(),e);
    		this.setListaCbxCategoriaProductos(comboCategoriaProducto.factorySelectItemError());
    	}
	}
	
	public void cargaListCriteriosBusqueda() {
		listCriteriosBusqueda = new ArrayList<SelectItem>();
		try {
			List lCriterios = parametrosBOIface.listaCriteriosBusquedaCmb();
			listCriteriosBusqueda.add(new SelectItem(0, "-- Seleccione --"));
			for (Iterator iter = lCriterios.iterator(); iter.hasNext();) {
				Parametros element = (Parametros) iter.next();
				listCriteriosBusqueda.add(new SelectItem(element.getValue(),
						element.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	public void cargaListaCriteriosBusquedaNoCliente() {
		listCriteriosBusquedaNoCliente = new ArrayList<SelectItem>();
		try {
			List lCriterios = parametrosBOIface.listaCriteriosBusquedaNoCliente();
			listCriteriosBusquedaNoCliente.add(new SelectItem(0, "-- Seleccione --"));
			for (Iterator iter = lCriterios.iterator(); iter.hasNext();) {
				Parametros element = (Parametros) iter.next();
				listCriteriosBusquedaNoCliente.add(new SelectItem(element
						.getValue(), element.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public List cargarListaTiposDocumento() {
		try{
			List listaCriteriosBusqueda = parametrosBOIface.listarTiposDocumento();
			listaTiposDocumento = new ArrayList<SelectItem>();
			listaTiposDocumento.add(new SelectItem(0, "-- Seleccione --"));
			if (listaCriteriosBusqueda != null && listaCriteriosBusqueda.size() > 0) {
				for (Iterator iter = listaCriteriosBusqueda.iterator(); iter
						.hasNext();) {
					Parametros element = (Parametros) iter.next();
					listaTiposDocumento.add(new SelectItem(element.getValue(),
							element.getLabel()));
				}
			}
			return listaTiposDocumento;
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}

	public void cargaListTiposCliente() {
		listTiposCliente = new ArrayList<SelectItem>();		
		try {
			List lTiposClientes = parametrosBOIface.listaTiposClienteCmb();
			listTiposCliente.add(new SelectItem(0, "-- Seleccione --"));
			for (Iterator iter = lTiposClientes.iterator(); iter.hasNext();) {
				Parametros element = (Parametros) iter.next();
				listTiposCliente.add(new SelectItem(element.getValue(), element
						.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	public void cargaListAnios() {
		listAnios = new ArrayList<SelectItem>();
		try {
			List lAnios = parametrosBOIface.listaAnios();
			for (Iterator iter = lAnios.iterator(); iter.hasNext();) {
				HashMap element = (HashMap) iter.next();
				listAnios.add(new SelectItem(element.get("anio").toString(),
						element.get("anio").toString()));
			}
			if (lAnios.size() > 0) {
				HashMap map = (HashMap) lAnios.get(0);
				anioSelectedIni = map.get("anio").toString();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	public void cargaListaTiposUsuario() {
		listaTiposUsu = new ArrayList<SelectItem>();
		listaTiposUsu.add(new SelectItem("0", "-- Seleccione --"));
		try {
			List lTiposUsu = parametrosBOIface.listaTiposUsuario();
			for (Iterator iter = lTiposUsu.iterator(); iter.hasNext();) {
				Parametros elem = (Parametros) iter.next();
				listaTiposUsu.add(new SelectItem(elem.getValue(), elem.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	public void cargaListaAniosMetas() {
		listaAniosMetas = new ArrayList<SelectItem>();
		try {
			List lAniosMeta = parametrosBOIface.listaAniosMetas();
			listaAniosMetas.add(new SelectItem(0, "Seleccione"));
			for (Iterator iter = lAniosMeta.iterator(); iter.hasNext();) {
				Parametros elem = (Parametros) iter.next();
				listaAniosMetas
						.add(new SelectItem(elem.getLabel(), elem.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public void cargaListaEjecutivosAAsignar(Long idUsuarioAsesor) {
		listaEjecutivosAAsignar = new ArrayList<SelectItem>();
		try {
			List lEjecAAsig = parametrosBOIface.listaEjecutivosAAsignar(idUsuarioAsesor.toString());
			listaEjecutivosAAsignar.add(new SelectItem(0, "Seleccione"));
			for (Iterator iter = lEjecAAsig.iterator(); iter.hasNext();) {
				Parametros elem = (Parametros) iter.next();
				listaEjecutivosAAsignar
						.add(new SelectItem(elem.getValue(), elem.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void cargaListaTiposMetas() {
		listaTipoMetas = new ArrayList<SelectItem>();
		try {			
			List lTiposMetas = parametrosBOIface.listaTiposMetas();
			listaTipoMetas.add(new SelectItem(0, "Seleccione"));
			for (Iterator iter = lTiposMetas.iterator(); iter.hasNext();) {
				Parametros elem = (Parametros) iter.next();
				listaTipoMetas
						.add(new SelectItem(elem.getValue(), elem.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public void cargaListaEjecutivosAReasignar(Long idUsuarioAsesor) {
		lstEjecAReasignar = new ArrayList<SelectItem>();
		try {
			lstEjecAReasignar.add(new SelectItem(0, "-- Seleccione --"));
			List lEjecAReasig = parametrosBOIface.listaEjecutivosAReasignar(String.valueOf(idUsuarioAsesor));
			for (Iterator iter = lEjecAReasig.iterator(); iter.hasNext();) {
				Parametros elem = (Parametros) iter.next();
				lstEjecAReasignar.add(new SelectItem(elem.getValue(), elem.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public void cargaListaTiposDeAsignacion() {
		lstTiposDeAsignacion = new ArrayList<SelectItem>();
		try {
			List lTiposDeAsig = parametrosBOIface.listaTiposDeAsignacion();
			if(lTiposDeAsig != null){
				for (Iterator iter = lTiposDeAsig.iterator(); iter.hasNext();) {
					Parametros elem = (Parametros) iter.next();
					lstTiposDeAsignacion.add(new SelectItem(elem.getValue().trim(), elem.getLabel().trim()));
				}	
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	public void cargaListaTiposUsuarioNuevo() {
		listaTiposUsuNuevo = new ArrayList<SelectItem>();
		try {
			List lTiposUsuNew = parametrosBOIface.listaTiposUsuario();
			for (Iterator iter = lTiposUsuNew.iterator(); iter.hasNext();) {
				Parametros elem = (Parametros) iter.next();
				listaTiposUsuNuevo.add(new SelectItem(elem.getValue(), elem.getLabel()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public void cargaListEscenarios(){
		listEscenarios=new ArrayList<SelectItem>();
		try {
			List lEscenarios=parametrosBOIface.listaEscenarios();
			listEscenarios.add(new SelectItem("", "-- Seleccione --"));
			if(lEscenarios!=null){
				for (Iterator iter = lEscenarios.iterator(); iter.hasNext();) {
					HashMap element = (HashMap) iter.next();
					listEscenarios.add(new SelectItem(element.get("value").toString(),element.get("label").toString()));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}

	public void cargaListEjecutivosSinAsignar(){
		listEjecutivosAAsignar=new ArrayList<SelectItem>();
		try {
			HashMap element = new HashMap();
			element.put("value", "0");
			element.put("label", "-- Seleccione --");
			listEjecutivosAAsignar.add(new SelectItem(element, element.get("label").toString()));
			
			List lEjecutivosAAsignar=parametrosBOIface.listaEjecutivosAAsignar();
			if(lEjecutivosAAsignar!=null){
				for (Iterator iter = lEjecutivosAAsignar.iterator(); iter.hasNext();) {
					element = (HashMap) iter.next();
					listEjecutivosAAsignar.add(new SelectItem(element, element.get("label").toString()));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public void cargaListTipoMeta(){
		listTipoMeta=new ArrayList<SelectItem>();
		try {
			List lTipoMeta=parametrosBOIface.listaTipoMeta();
			listTipoMeta.add(new SelectItem("", "-- Seleccione --"));
			if(lTipoMeta!=null){
			for (Iterator iter = lTipoMeta.iterator(); iter.hasNext();) {
				HashMap element = (HashMap) iter.next();
				listTipoMeta.add(new SelectItem(element.get("value").toString(),element.get("label").toString()));
			}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public void cargaListSecciones(){
		listSecciones=new ArrayList<SelectItem>();
		HashMap element = new HashMap();
		element.put("value", "");
		element.put("label", "-- Seleccione --");
		listSecciones.add(new SelectItem(element, element.get("label").toString()));
		try {
			List lSecciones=parametrosBOIface.listaSecciones();
			if(lSecciones != null){
				for (Iterator iter = lSecciones.iterator(); iter.hasNext();) {
					element = (HashMap) iter.next();
					listSecciones.add(new SelectItem(element, element.get("label").toString()));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	private void cargarListaEstadosPerfilamiento(){
		try {
			listEstadosPerfilamiento = new ArrayList<SelectItem>();
			List<MultiTabla> listEstados = multitablaBO.listarMultiTabla(Constantes.COD_TABLA_ESTADOS_PERFILAMIENTO, "");
			if(listEstados != null && listEstados.size() > 0){
				for(MultiTabla ob : listEstados){
					listEstadosPerfilamiento.add(new SelectItem(ob.getValor1(), ob.getDescripcion()));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void cargarListaEstadosRebalanceo(){
		try {
			listEstadosRebalanceo = new ArrayList<SelectItem>();
			List<MultiTabla> listEstados = multitablaBO.listarMultiTabla(Constantes.COD_TABLA_ESTADOS_REBALANCEO, "");
			if(listEstados != null && listEstados.size() > 0){
				for(MultiTabla ob : listEstados){
					listEstadosRebalanceo.add(new SelectItem(ob.getValor1(), ob.getDescripcion()));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public List getListPerfiles() {
		return listPerfiles;
	}

	public void setListPerfiles(List<SelectItem> listPerfiles) {
		this.listPerfiles = listPerfiles;
	}

	public String getCodPerfil() {
		return codPerfil;
	}

	public void setCodPerfil(String codPerfil) {
		this.codPerfil = codPerfil;
	}

	public List getListCriteriosBusqueda() {
		return listCriteriosBusqueda;
	}

	public void setListCriteriosBusqueda(List<SelectItem> listCriteriosBusqueda) {
		this.listCriteriosBusqueda = listCriteriosBusqueda;
	}

	public List getListTiposCliente() {
		return listTiposCliente;
	}

	public void setListTiposCliente(List<SelectItem> listTiposCliente) {
		this.listTiposCliente = listTiposCliente;
	}

	public String getCodCriterioBusqueda() {
		return codCriterioBusqueda;
	}

	public void setCodCriterioBusqueda(String codCriterioBusqueda) {
		this.codCriterioBusqueda = codCriterioBusqueda;
	}

	public String getCodTipoCliente() {
		return codTipoCliente;
	}

	public void setCodTipoCliente(String codTipoCliente) {
		this.codTipoCliente = codTipoCliente;
	}

	public List<SelectItem> getListMeses() {
		return listMeses;
	}

	public void setListMeses(List<SelectItem> listMeses) {
		this.listMeses = listMeses;
	}

	public List<SelectItem> getListAnios() {
		return listAnios;
	}

	public void setListAnios(List<SelectItem> listAnios) {
		this.listAnios = listAnios;
	}

	public List<SelectItem> getListCriteriosBusquedaNoCliente() {
		return listCriteriosBusquedaNoCliente;
	}

	public void setListCriteriosBusquedaNoCliente(
			List<SelectItem> listCriteriosBusquedaNoCliente) {
		this.listCriteriosBusquedaNoCliente = listCriteriosBusquedaNoCliente;
	}

	public List<SelectItem> getListMedioContacto() {
		return listMedioContacto;
	}

	public void setListMedioContacto(List<SelectItem> listMedioContacto) {
		this.listMedioContacto = listMedioContacto;
	}

	public List<SelectItem> getListLugarContacto() {
		return listLugarContacto;
	}

	public void setListLugarContacto(List<SelectItem> listLugarContacto) {
		this.listLugarContacto = listLugarContacto;
	}

	public List<SelectItem> getListRazonContacto() {
		return listRazonContacto;
	}

	public void setListRazonContacto(List<SelectItem> listRazonContacto) {
		this.listRazonContacto = listRazonContacto;
	}

	public List<SelectItem> getListaAlertasEstado() {
		return listaAlertasEstado;
	}

	public void setListaAlertasEstado(List<SelectItem> listaAlertasEstado) {
		this.listaAlertasEstado = listaAlertasEstado;
	}

	public List<CategoriaProducto> getListCategoriaProducto() {
		return listCategoriaProducto;
	}

	public void setListCategoriaProducto(
			List<CategoriaProducto> listCategoriaProducto) {
		this.listCategoriaProducto = listCategoriaProducto;
	}

	public List<SelectItem> getListaTiposDocumento() {
		return listaTiposDocumento;
	}

	public void setListaTiposDocumento(List<SelectItem> listaTiposDocumento) {
		this.listaTiposDocumento = listaTiposDocumento;
	}

	public String getAnioSelectedIni() {
		return anioSelectedIni;
	}

	public void setAnioSelectedIni(String anioSelectedIni) {
		this.anioSelectedIni = anioSelectedIni;
	}

	public List<SelectItem> getListEjecutivosAAsignar() {
		return listEjecutivosAAsignar;
	}

	public void setListEjecutivosAAsignar(List<SelectItem> listEjecutivosAAsignar) {
		this.listEjecutivosAAsignar = listEjecutivosAAsignar;
	}

	public List<SelectItem> getListTipoMeta() {
		return listTipoMeta;
	}

	public void setListTipoMeta(List<SelectItem> listTipoMeta) {
		this.listTipoMeta = listTipoMeta;
	}

	public List<SelectItem> getListSecciones() {
		return listSecciones;
	}

	public void setListSecciones(List<SelectItem> listSecciones) {
		this.listSecciones = listSecciones;
	}

	public List<SelectItem> getListEscenarios() {
		return listEscenarios;
	}

	public void setListEscenarios(List<SelectItem> listEscenarios) {
		this.listEscenarios = listEscenarios;
	}

	public List<SelectItem> getListaAniosMetas() {
		return listaAniosMetas;
	}

	public void setListaAniosMetas(List<SelectItem> listaAniosMetas) {
		this.listaAniosMetas = listaAniosMetas;
	}

	public List<SelectItem> getListaEjecutivosAAsignar() {
		return listaEjecutivosAAsignar;
	}

	public void setListaEjecutivosAAsignar(List<SelectItem> listaEjecutivosAAsignar) {
		this.listaEjecutivosAAsignar = listaEjecutivosAAsignar;
	}

	public List<SelectItem> getListaFuentes() {
		return listaFuentes;
	}

	public void setListaFuentes(List<SelectItem> listaFuentes) {
		this.listaFuentes = listaFuentes;
	}

	public List<SelectItem> getListaProcedencias() {
		return listaProcedencias;
	}

	public void setListaProcedencias(List<SelectItem> listaProcedencias) {
		this.listaProcedencias = listaProcedencias;
	}

	public List<SelectItem> getListaTipoMetas() {
		return listaTipoMetas;
	}

	public void setListaTipoMetas(List<SelectItem> listaTipoMetas) {
		this.listaTipoMetas = listaTipoMetas;
	}

	public List<SelectItem> getListaTiposUsu() {
		return listaTiposUsu;
	}

	public void setListaTiposUsu(List<SelectItem> listaTiposUsu) {
		this.listaTiposUsu = listaTiposUsu;
	}

	public List<SelectItem> getListaTiposUsuNuevo() {
		return listaTiposUsuNuevo;
	}

	public void setListaTiposUsuNuevo(List<SelectItem> listaTiposUsuNuevo) {
		this.listaTiposUsuNuevo = listaTiposUsuNuevo;
	}

	public List<SelectItem> getLstEjecAReasignar() {
		return lstEjecAReasignar;
	}

	public void setLstEjecAReasignar(List<SelectItem> lstEjecAReasignar) {
		this.lstEjecAReasignar = lstEjecAReasignar;
	}

	public List<SelectItem> getLstTiposDeAsignacion() {
		return lstTiposDeAsignacion;
	}

	public void setLstTiposDeAsignacion(List<SelectItem> lstTiposDeAsignacion) {
		this.lstTiposDeAsignacion = lstTiposDeAsignacion;
	}
	
	public List<SelectItem> getListaOperacionesBBVA() {
		return listaOperacionesBBVA;
	}

	public void setListaOperacionesBBVA(List<SelectItem> listaOperacionesBBVA) {
		this.listaOperacionesBBVA = listaOperacionesBBVA;
	}

	public List<SelectItem> getListaOperacionesRecursos() {
		return listaOperacionesRecursos;
	}

	public void setListaOperacionesRecursos(
			List<SelectItem> listaOperacionesRecursos) {
		this.listaOperacionesRecursos = listaOperacionesRecursos;
	}

	public List<SelectItem> getListaCatProductos() {
		return listaCatProductos;
	}

	public void setListaCatProductos(List<SelectItem> listaCatProductos) {
		this.listaCatProductos = listaCatProductos;
	}

	public List<SelectItem> getListaFrecuenciaPago() {
		return listaFrecuenciaPago;
	}

	public void setListaFrecuenciaPago(List<SelectItem> listaFrecuenciaPago) {
		this.listaFrecuenciaPago = listaFrecuenciaPago;
	}

	public List<SelectItem> getListaTipoAmortizacion() {
		return listaTipoAmortizacion;
	}

	public void setListaTipoAmortizacion(List<SelectItem> listaTipoAmortizacion) {
		this.listaTipoAmortizacion = listaTipoAmortizacion;
	}

	public List<SelectItem> getListaTipoInstrumento() {
		return listaTipoInstrumento;
	}

	public void setListaTipoInstrumento(List<SelectItem> listaTipoInstrumento) {
		this.listaTipoInstrumento = listaTipoInstrumento;
	}

	public List<SelectItem> getListaSectores() {
		return listaSectores;
	}

	public void setListaSectores(List<SelectItem> listaSectores) {
		this.listaSectores = listaSectores;
	}

	public List<SelectItem> getListaTipoMoneda() {
		return listaTipoMoneda;
	}

	public void setListaTipoMoneda(List<SelectItem> listaTipoMoneda) {
		this.listaTipoMoneda = listaTipoMoneda;
	}

	public List<SelectItem> getListaTipoDocsClientesEspeciales() {
		return listaTipoDocsClientesEspeciales;
	}

	public void setListaTipoDocsClientesEspeciales(
			List<SelectItem> listaTipoDocsClientesEspeciales) {
		this.listaTipoDocsClientesEspeciales = listaTipoDocsClientesEspeciales;
	}

	public List<SelectItem> getListaFiltroClientesEspeciales() {
		return listaFiltroClientesEspeciales;
	}

	public void setListaFiltroClientesEspeciales(
			List<SelectItem> listaFiltroClientesEspeciales) {
		this.listaFiltroClientesEspeciales = listaFiltroClientesEspeciales;
	}

	public List<SelectItem> getListaSiNo() {
		return listaSiNo;
	}

	public void setListaSiNo(List<SelectItem> listaSiNo) {
		this.listaSiNo = listaSiNo;
	}

	public List<SelectItem> getListaSiNoTodos() {
		return listaSiNoTodos;
	}

	public void setListaSiNoTodos(List<SelectItem> listaSiNoTodos) {
		this.listaSiNoTodos = listaSiNoTodos;
	}

	public List<SelectItem> getListaAsesores() {
		return listaAsesores;
	}

	public void setListaAsesores(List<SelectItem> listaAsesores) {
		this.listaAsesores = listaAsesores;
	}
	
	public List<SelectItem> getListaAnio() {
		return listaAnio;
	}
	
	public void setListaAnio(List<SelectItem> listaAnio) {
		this.listaAnio = listaAnio;
	}
	
	public List<SelectItem> getListaSoloAsesores() {
		return listaSoloAsesores;
	}
	public void setListaSoloAsesores(List<SelectItem> listaSoloAsesores) {
		this.listaSoloAsesores = listaSoloAsesores;
	}	
	
	public List<SelectItem> getListaCbxCategoriaProductos() {
		return listaCbxCategoriaProductos;
	}
	
	public void setListaCbxCategoriaProductos(
			List<SelectItem> listaCbxCategoriaProductos) {
		this.listaCbxCategoriaProductos = listaCbxCategoriaProductos;
	}

	public List<SelectItem> getListEstadosPerfilamiento() {
		return listEstadosPerfilamiento;
	}

	public void setListEstadosPerfilamiento(
			List<SelectItem> listEstadosPerfilamiento) {
		this.listEstadosPerfilamiento = listEstadosPerfilamiento;
	}

	public List<SelectItem> getListEstadosRebalanceo() {
		return listEstadosRebalanceo;
	}

	public void setListEstadosRebalanceo(List<SelectItem> listEstadosRebalanceo) {
		this.listEstadosRebalanceo = listEstadosRebalanceo;
	}
}
